A field programmable gate array (FPGA) is an integrated circuit that may be designed and programmed by a user after manufacture. The FPGA is made up of logic blocks that may be configured to perform various duties, from simple logic gates to more complex functions, and may include memory elements ranging from simple flip-flops to blocks of memory. The FPGA receives electrical power through pins connected to the circuit board on which the FPGA is installed. Electrical power is supplied to the FPGA to operate logic units used as part of the specific FPGA design. Based on the function and complexity of the design, more or less power may be required to operate the FPGA when comparing one FPGA design to another.
The total power utilized by an FPGA is valuable information as to the performance and longevity of the FPGA device. It may be assumed that the more power drawn by an FPGA, the shorter the expected lifespan of the FPGA as compared to a similar device drawing less power over its lifetime. Onboard system monitoring utilities are available which provide certain operating parameters of the FPGA. For example, the die temperature of the FPGA may be measured by the system monitor and a temperature reading provided for use in diagnostics. The die temperature provides some information regarding power dissipated by the FPGA, however, temperature alone is not a reliable indicator of the total power used by an FPGA.
Power estimation tools, for example, the XPower Estimator tool from Xilinx, Inc. of San Jose, Calif., are available that estimate an FPGA design's power consumption prior to implementation based on the expected utilization of device resources, operating frequencies and toggle (switching) rates. However, these tools rely on best effort guesses of the designer to provide resource estimates and switching rates based on the designer's vision of how the FPGA design will function in the field after implementation. These tools cannot adapt to variations in the relevant parameters during actual operation.
Total power may be derived based on the supplied voltage multiplied by the actual current being drawn through the FPGA. However, measuring total current flowing through the FPGA is problematic. External devices, such as an ammeter, must be attached to power inputs to the FPGA, or through a circuit board interface feeding the FPGA. Additional devices add to the complexity and cost of design. Additionally, the connections between the FPGA and the circuit board must be disturbed to accommodate the external devices. Alternative techniques for estimating total power consumption of an FPGA during operation without the need for external devices or disruption of the circuit board are desired.